Data collection is ever increasing in a world wherein more and more transactions occur electronically. Indeed, certain applications, such as data mining, that are made more useful by the combination of increasing processor power and increasing availability of data, tend to inspire further data collection. This inspiration to further data collection may be seen, for instance, in the proliferation of customer reward programs. In response to this increasing availability of data, industries have been built up over recent decades around database technology. Specifically, active members of these industries include database vendors, who sell databases either individually or collectively (in a catalog), and tool vendors, who sell software that is required to create a new database or alter, or query, existing databases.
The Structured Query Language (SQL) is a standard interactive and programming language for retrieving information from, writing information to and updating a database. Fundamentally, a set of data may be considered to be stored in one or more tables, where each table is made up of columns. When a request (or “query”) is made to retrieve data from these tables, the resultant output is often also presented in a table form. There are many different versions of the SQL, but to be in compliance with the ANSI SQL '92 Standard, they all must use and support statements, made up of the same major keywords (such as SELECT, UPDATE, DELETE, INSERT, WHERE, and others), in a similar manner. For further information about SQL, see “ISO Final Draft International Standard (FDIS)—Database Language SQL—Part 2: Foundation (SQL/Foundation)”, March 1999, which is incorporated herein by reference and referenced hereinafter as “the SQL specification”.
Although the SQL has a standardized format for these statements, today, all database engines have an internal representation of these statements that is not necessarily exposed to the outside world. As such, each tool for manipulating a particular implementation of a database requires a proprietary means to translate standard SQL statements into an internal representation specific to that database.